// 导入crwler
import Crawler from 'crawler';

// *************************************************************************************
//限制最大并发数量  maxConnections
/* const c = new Crawler({
    // 最大并发数默认为2
    //表示最多有多少个请求可以同时（并发）进行，超过这个数的请求会排队等待前面的请求结束后再启动。
    maxConnections: 2,
    callback: function(error,res,done){
        if(error){
            console.log('错误信息',error);
        }else{
            const $ = res.$;
            console.log($('title').text());

        }
        done();
    }
});

c.queue(['https://www.baidu.com','https://taobao.com','https://jd.com','https://toutiao.com']); */


// 为什么要限制并发数？
    //(1) 避免服务器压力过大
    // 大量同时请求可能导致目标服务器拒绝服务或者封禁 IP。

    //(2)控制本地资源消耗
    // 并发越高，CPU 和网络带宽消耗越大，可能导致爬虫机器负载过高。

    //(3)遵守网站爬虫礼仪
    // 一般建议爬虫设置合理并发，避免给被爬站点带来不必要的负担。

// 总结
// maxConnections	影响
// 小（如1-2）	请求依次或少量并发，运行更平稳，对目标服务器友好
// 中等（5-10）	提升抓取速度，但增加系统和网络压力
// 高（>10）	抓取速度快，但风险也大，容易被封IP或引起异常

// *************************************************************************************

// 慢速，设置请求之间闲置时间
// 注意: maxConnections` 设置不生效 将被强制修改为 1
const c = new Crawler({
    // `maxConnections` 设置不生效 将被强制修改为 1
    maxConnections: 10,
    // 两次请求之间将闲置1000ms
    rateLimit: 1000,
    callback: function(error,res,done){
        if(error){
            console.log('错误信息',error);
        }else{
            const $ = res.$;
            console.log($('title').text());

        }
        done();
    }
});

c.queue(['https://www.baidu.com','https://taobao.com','https://jd.com','https://toutiao.com']);

